/*
 * ColaHandler.cpp
 *
 *  Created on: 29/04/2011
 *      Author: facundo
 */

#include "ColaHandler.h"
#include <iostream>
#include <stdlib.h>

#define	SHM	"ColaHandler.cpp"



using namespace std;

ColadeMensajes *IniciarCola(Semaforo* semaforo1)
{
    ColadeMensajes *cola = new ColadeMensajes(semaforo1);
    switch (cola->Iniciar()){
        case -1:
            cout << "Error al obtener identificador para cola mensajes" << endl;
            break;
        case -2:
            cout << "Error al obtener clave para cola mensajes" << endl;
            break;
    }
    return cola;
}



Mi_Tipo_Mensaje ColaHandler::Recibir(){
return this->cola->Recibir();
}


ColaHandler::ColaHandler() {
	this->semaforo1= new Semaforo ( (char*)SHM,0 );
	this->cola= IniciarCola(semaforo1);
	//this->incSem();
	// TODO Auto-generated constructor stub

}

int  ColaHandler::getValorSemaforo(){
return this->semaforo1->getvalue();

}

int  ColaHandler::Enviar(Mi_Tipo_Mensaje  unMensaje){

return this->cola->Enviar(unMensaje);

}
ColaHandler::~ColaHandler() {
	// TODO Auto-generated destructor stub

	  if (semaforo1->getvalue()==0)
		    {
				cola->~ColadeMensajes();
				semaforo1->eliminar();

		    	cout<<"elimina semaforo y cola de mensajes"<<endl;
		    }

}

void ColaHandler::incSem(){
	semaforo1->v();

}

void ColaHandler::decSem(){
	semaforo1->p();

}

